home *** CD-ROM | disk | FTP | other *** search
- /*
- REAL Simple UENG Sample App
- Written by Leonard Rosenthol
- 6/1/91
-
- Don't forget to copy the uu**code resource over and rename it encode.π.rsrc.
- */
-
- #include "UUGlue.h"
-
- /* Prototypes */
- void InitToolbox(void);
- void getOrigFile(SFReply *reply);
- void getDestFile(SFReply *reply, Str255 destName);
- OSErr encodeFiles(SFReply origFile, SFReply destFile);
- char * Pstrcpy(register Str255 s1, register Str255 s2);
- char * Pstrcat(register Str255 s1, register Str255 s2);
-
-
- main()
- {
- SFReply origFile, destFile;
- OSErr err;
- Str255 origName;
-
- InitToolbox();
- getOrigFile(&origFile);
- if (origFile.good)
- {
- Pstrcpy(origName, origFile.fName);
- Pstrcat(origName, (StringPtr)"\p.uu");
- getDestFile(&destFile, origName);
- if (destFile.good)
- {
- err = encodeFiles(origFile, destFile);
- }
- }
- }
-
- void InitToolbox()
- {
- InitGraf(&thePort);
- InitCursor();
- InitFonts();
- InitWindows();
- InitMenus();
- InitDialogs(0L);
- TEInit();
- FlushEvents(-1, 0);
- }
-
-
- void getOrigFile(SFReply *reply)
- {
- Point where;
- SFTypeList typeList;
-
- SetPt(&where, 50, 50);
- typeList[0] = 'TEXT';
- SFGetFile(where, (StringPtr)"\p", (ProcPtr)0L, 1, typeList, (ProcPtr)0L, reply);
- }
-
- void getDestFile(SFReply *reply, Str255 destName)
- {
- Point where;
-
- SetPt(&where, 50, 50);
- SFPutFile(where, (StringPtr)"\pName the encoded file", destName, 0L, reply);
- }
-
- OSErr encodeFiles(SFReply origFile, SFReply destFile)
- {
- Handle engineHdl, tableHdl;
- OSErr err, err1;
- int origRefNum, destRefNum;
- int numbufrs = 100;
- Str255 header;
- long count;
-
- err = FSOpen(origFile.fName, origFile.vRefNum, &origRefNum);
- if (err == noErr)
- {
- err = Create(destFile.fName, destFile.vRefNum, 'MPS ', 'TEXT');
- if (err == noErr)
- {
- err = FSOpen(destFile.fName, destFile.vRefNum, &destRefNum);
- Pstrcpy(header, (StringPtr)"\pbegin 0755 ");
- Pstrcat(header, origFile.fName);
- Pstrcat(header, (StringPtr)"\p\r");
- count = (long)header[0];
- err = FSWrite(destRefNum, &count, &header[1]);
-
- UULoad(&tableHdl, &engineHdl);
- err = uuencode(origRefNum, destRefNum, numbufrs, 0L, *tableHdl, *engineHdl);
- UUnload(tableHdl, engineHdl);
-
- Pstrcpy(header, (StringPtr)"\pend\r");
- count = (long)header[0];
- err = FSWrite(destRefNum, &count, &header[1]);
- err1 = FSClose(destRefNum);
- }
- err1 = FSClose(origRefNum);
- }
- return(err);
- }
-
-
- /* Some string handling routines */
- char * Pstrcpy(register Str255 s1, register Str255 s2)
- {
- register unsigned int i;
- unsigned int l = s2[0];
- char *s = (char *) s1;
-
- for( i = 0; i <= l; i++ ) {
- *s1++ = *s2++;
- }
-
- return( s );
- }
- char * Pstrcat(register Str255 s1, register Str255 s2)
- {
- register unsigned int i;
- unsigned int l = s2[0];
- char *s = (char *) s1;
-
- s1 = &s1[s1[0]];
- for( i = 1; i <= l; i++ ) {
- *++s1 = *++s2;
- }
- s[0] += --i;
-
- return( s );
- }